package com.qf.utils;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

public class TimeInvocationHandler implements InvocationHandler {

    private Object target;

    public TimeInvocationHandler(Object target){
        this.target = target;
    }

    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        //添加代理逻辑
        long start = System.currentTimeMillis();

        //调用被代理对象的核心业务方法
        //参数1：在哪个对象上调用该方法，这里传入的是被代理对象（目标对象）
        //参数2：方法调用时需要的参数
        Object result = method.invoke(target, args);

        long end = System.currentTimeMillis();

        System.out.println("方法运行耗时"+(end-start)+"ms");

        return result;
    }
}
